iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
0
自我挑戰組

今晚我想來點 Ruby on Rails 系列 第 22

<Day 22>在 Ruby on Rails 什麼是 scaffold?

  • 分享至 

  • xImage
  •  

在專案剛開始的時候,可能會使用到 “scaffold” 來建立檔案,方法非常簡單使用rails g scaffold指令。但是這個指令到底做了什麼事?

“scaffold” 是一個自動產生 rails 專案檔案基礎結構的指令。指令會產生這些檔案:

  • 一個 controller
  • 一個 model
  • 一個包含標準 controller action (index, edit, show, new) 的views 檔案
  • 一個 new route
  • a migration

如何使用 Rails Scaffold 指令

建立網頁書店專案的例子會像這樣:

rails g scaffold books

接下來會看到很多程式碼在終端機跑,那些程式碼就是檔案產生的細節。會產生BooksControllerBook modelresources :books 路徑會產生在你的config/routes.rb檔案裡、一系列測試相關的檔案,當然還有 view。

如果想要取消剛剛用“scaffold”指令做出來的東西,可以使用下面的指令:

rails d scaffold books

“d” 表示 “destroy”
把 “d” 這件事記住,這個指令可以刪除由“scaffold”產生的檔案

在開始執行 “scaffold” 指令產生的程式碼之前必須要先執行 migration 來更新你 database 的 schema,使用rails db:migrate指令。

如果沒有錯誤訊息出現,就代表專案可準備開始了!已經有了基本架構的 rails 應用程式,接下來就可以執行Run rails server,打開瀏覽器連到localhost:3000/books 就可以看到畫面了。

Rails Scaffold 指令預設會產生額外的檔案

model 只有 timestamp 欄位,代表只能記錄關於書的 timestamp (建立的時間或更新的時間)。

“scaffold”如何產生額外的檔案:

rails g scaffold books title:string author:string publication_year:integer

如果像這樣產生“scaffold”會得到三個欄位一個 title、author 跟一個 publication_year。

建立一個新的 migration

rails g migration.

可以使用這個 migration 來建立個別的元件,像是 controllers

rails g controller Fruit
rails g model Fruit name:string color:string (creates model + migration)
rails g migration CreateBook title:string year:integer (creates migration only)

使用 “scaffold” 最大的好處是所有檔案都會依照 rails 慣例來命名,這就可以避免奇怪的錯誤訊息,也可以省下很多手動產生檔案的時間。請試著練習刪除自動產生但是用不到的檔案,在使用像是 “g controller” 看看終端機裡面程式碼會顯示產生了哪些檔案,不用的就刪除吧。


上一篇
<Day 21>如何使用 Logs 來追蹤事件跟錯誤訊息
下一篇
<Day 23>Ruby 的實體變數
系列文
今晚我想來點 Ruby on Rails 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言